package org.x.user.service;

import java.lang.Boolean;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import org.x.user.entity.SysMenu;
import org.x.user.dto.MenuDTO;
import org.x.user.query.MenuQuery;
import org.x.user.vo.MenuTreeVO;

/**
 * 菜单管理
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
public interface MenuService extends IService<SysMenu> {

    /**
     * 新增菜单:检查菜单是否已存在，如果不存在则保存菜单信息到数据库
     *
     * @param menuDTO 菜单管理入参实体
     * @return
     */
    Boolean addMenu(MenuDTO menuDTO);

    /**
     * 删除菜单:检查菜单是否存在，如果存在则删除菜单信息
     *
     * @param menuDTO 菜单管理入参实体
     * @return
     */
    Boolean deleteMenu(MenuDTO menuDTO);

    /**
     * 修改菜单:检查菜单是否存在，如果存在则更新菜单信息
     *
     * @param menuDTO 菜单管理入参实体
     * @return
     */
    Boolean updateMenu(MenuDTO menuDTO);

    /**
     * 查询菜单:根据菜单ID查询菜单信息
     *
     * @param menuQuery 菜单查询入参实体
     * @return  菜单实体类
     */
    SysMenu getMenuInfo(MenuQuery menuQuery);

    /**
     * 查询树形结构的菜单
     * @return
     */
    List<MenuTreeVO> getMenuTree();

    /**
     * 查询菜单层次关系:根据菜单ID查询其所有后代菜单及其深度
     *
     * @param menuQuery 菜单查询入参实体
     * @return
     */
//    List<MenuClosureDO> getMenuClosure(MenuQuery menuQuery);


}
